import request from './request'

// 获取待售宠物列表（用户端）
export function getSalePetList(params) {
  return request({
    url: '/sale-pets',
    method: 'get',
    params
  })
}

/**
 * 管理员查询待售宠物列表（支持动态查询）
 * @param {Object} params
 * @param {number} params.pageNum - 页码，默认1
 * @param {number} params.pageSize - 每页大小，默认10
 * @param {string} params.petName - 宠物名称（模糊查询）
 * @param {number} params.categoryId - 分类ID（1=狗，2=猫）
 * @param {string} params.breed - 品种（模糊查询）
 * @param {number} params.saleStatus - 销售状态（1=待售，2=已预定，3=已售出，4=已下架）
 * @param {number} params.minPrice - 最低售价
 * @param {number} params.maxPrice - 最高售价
 * @param {number} params.minDiscount - 最低折扣(%)
 * @param {number} params.maxDiscount - 最高折扣(%)
 * @param {number} params.minViewCount - 最少浏览量
 * @param {number} params.minLikeCount - 最少点赞数
 * @param {boolean} params.isRecommended - 是否推荐
 * @param {boolean} params.isHot - 是否热销
 * @param {string} params.startDate - 上架开始日期
 * @param {string} params.endDate - 上架结束日期
 * @param {string} params.orderBy - 排序字段（price/viewCount/likeCount/updateTime）
 * @param {string} params.order - 排序方向（asc/desc）
 * @returns {Promise}
 */
export function getAdminSalePetList(params) {
  return request({
    url: '/sale-pets/admin/list',
    method: 'get',
    params
  })
}

// 获取待售宠物详情
export function getSalePetDetail(id) {
  return request({
    url: `/sale-pets/${id}`,
    method: 'get'
  })
}

// 添加待售宠物
export function addSalePet(data) {
  return request({
    url: '/sale-pets',
    method: 'post',
    data
  })
}

// 更新待售宠物
export function updateSalePet(id, data) {
  return request({
    url: `/sale-pets/${id}`,
    method: 'put',
    data
  })
}

// 删除待售宠物
export function deleteSalePet(id) {
  return request({
    url: `/sale-pets/${id}`,
    method: 'delete'
  })
}

// 更新销售状态
export function updateSalePetStatus(id, status) {
  return request({
    url: `/sale-pets/${id}/status`,
    method: 'put',
    data: { status }
  })
}

export default {
  getSalePetList,
  getSalePetDetail,
  addSalePet,
  updateSalePet,
  deleteSalePet,
  updateSalePetStatus,
  getAdminSalePetList
}
